#!/bin/bash

# build.sh - 编译脚本

# 设置Qt路径和交叉编译工具链路径
export Qt5_DIR="/home/syl/qt_lib_aarch64-linux-gnu_6.5/qt-everywhere-src-5.15.2/lib/cmake/Qt5"
export COMPILER_PREFIX="/home/syl/qt_need/compiler/gcc-linaro-6.5.0-2018.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu"

# 解析命令行参数
CLEAN_BUILD=false
while getopts "n" opt; do
  case $opt in
    n)
      CLEAN_BUILD=true
      ;;
    \?)
      echo "无效选项: -$OPTARG" >&2
      exit 1
      ;;
  esac
done

# 创建构建目录
mkdir -p build
cd build

# 如果需要清理编译，则删除旧的构建文件
if [ "$CLEAN_BUILD" = true ]; then
    echo "执行清理编译..."
    rm -rf *
else
    echo "执行增量编译..."
fi

# 执行CMake配置和构建
cmake .. \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_C_COMPILER=${COMPILER_PREFIX}-gcc \
    -DCMAKE_CXX_COMPILER=${COMPILER_PREFIX}-g++ \
    -DQt5_DIR=${Qt5_DIR} \
    -DCMAKE_PREFIX_PATH=${Qt5_DIR}/../../..

# 检查CMake配置是否成功
if [ $? -ne 0 ]; then
    echo "CMake配置失败，请检查Qt路径和依赖项"
    exit 1
fi

# 编译项目
# 使用CPU核心数减2，保留一个核心给系统
make -j$(($(nproc) - 2))

# 检查编译是否成功
if [ $? -ne 0 ]; then
    echo "编译失败"
    exit 1
fi

echo "编译完成！可执行文件位于 output/bin 目录中"